from scipy.io.wavfile import read # libreria para lectura de archivos de audio
from scipy.io.wavfile import write
from scipy.signal import resample # para el submuestreo
from IPython.display import Audio # para escuchar la senal
import numpy as np #para poder utilizar np
import matplotlib.pyplot as plt #para poder utilzar los plt
from scipy.io import wavfile
import numpy as np
# cargar el archivo de audio estéreo
rate, data = wavfile.read('audio1_clase1.wav')
#señal análoga
left_channel = data[:, 0]
right_channel = data[:, 1]
# Normalización de la señal
#canal izquierdo
left_channel=left_channel/float(max(abs(left_channel)))
#canal derecho
right_channel=right_channel/float(max(abs(right_channel)))
t=np.arange(0,float(len(data))/rate,1/rate)
t1=np.arange(0,float(len(left_channel))/rate,1/rate)
t2=np.arange(0,float(len(right_channel))/rate,1/rate)
#señal digital
#canal izquierdo
norm1 =1.0/np.max(np.abs(left_channel))
sA1 = 460*left_channel*norm1
valor1=np.round(sA1)
#canal derecho
norm2 =1.0/np.max(np.abs(right_channel))
sA2= 460*right_channel*norm2
valor2=np.round(sA2)
# guardar los canales como archivos separados
wavfile.write('canal_izquierdo.wav', rate, left_channel)
wavfile.write('canal_derecho.wav', rate, right_channel)
Audio(left_channel, rate=rate) #para escuchar la señal del canal izquierdo si lo desea
Audio(right_channel, rate=rate) #para escuchar la señal del canal derecho si lo desea
# señal canal izquierdo
plt.figure(figsize=(15,10 ))
plt.subplot(2, 1, 1)
plt.plot(t1,left_channel)
##plt.stem(t,left_channel)
plt.title('Canal izquierdo')
plt.xlabel('Muestras en el tiempo')
plt.ylabel('Amplitud')
plt.xlim(0.4,0.6)
plt.subplot(2, 1, 2)
plt.plot(t1,valor1)
plt.title('Señal Digital Canal izquierdo')
plt.xlabel('Muestras en el tiempo')
plt.ylabel('Amplitud')
plt.xlim(0.4,0.401)
plt.show()
plt.figure(figsize=(15,10 ))
plt.subplot(2, 1, 1)
plt.plot(t2,right_channel)
##plt.stem(t,left_channel)
plt.title('Canal Derecho')
plt.xlabel('Muestras en el tiempo')
plt.ylabel('Amplitud')
plt.xlim(0.4,0.6)
plt.subplot(2, 1, 2)
plt.plot(t2,valor2)
plt.title('Señal Digital Canal derecho')
plt.xlabel('Muestras en el tiempo')
plt.ylabel('Amplitud')
plt.xlim(0.4,0.401)
plt.show()
noise= np.random.normal(0,20,len(left_channel))
noise=noise/float(max(abs(noise)))
signal_noise=left_channel+noise
tn=np.arange(0,float(len(signal_noise))/rate,1/rate)
# Graficamos la señal original respecto a la señal con ruido
plt.figure(figsize=(20,15 ))
plt.subplot(3, 1, 1)
plt.plot(tn,signal_noise)
plt.title('Canal derecho con ruido')
plt.xlabel('Muestras en el tiempo')
plt.ylabel('Amplitud')
plt.subplot(3, 1, 2)
plt.plot(tn,left_channel)
plt.title('Canal Derecho sin ruido')
plt.xlabel('Muestras en el tiempo')
plt.ylabel('Amplitud')
plt.subplot(3, 1, 3)
plt.plot(tn,noise)
plt.title('Ruido gaussiano')
plt.xlabel('Muestras en el tiempo')
plt.ylabel('Amplitud')
plt.show()
Audio(signal_noise, rate=rate)
noise2= np.random.normal(0,10,len(left_channel))
noise2=noise2/float(max(abs(noise2)))
signal_noise2=right_channel+noise2
tn2=np.arange(0,float(len(signal_noise2))/rate,1/rate)
# Graficamos la señal original respecto a la señal con ruido
plt.figure(figsize=(20,15))
plt.subplot(3, 1, 1)
plt.plot(tn2,signal_noise2)
plt.title('Canal izquierdo con ruido')
plt.xlabel('Muestras en el tiempo')
plt.ylabel('Amplitud')
plt.subplot(3, 1, 2)
plt.plot(tn2,right_channel)
plt.title('Canal izquierdo sin ruido')
plt.xlabel('Muestras en el tiempo')
plt.ylabel('Amplitud')
plt.subplot(3, 1, 3)
plt.plot(tn2,noise2)
plt.title('Ruido gaussiano')
plt.xlabel('Muestras en el tiempo')
plt.ylabel('Amplitud')
plt.show()
Audio(signal_noise2, rate=rate)
fs1=2.1*rate
t_m=np.arange(0,float(len(left_channel))/fs1,1/fs1)
# Graficamos la señal original respecto a la señal con ruido
plt.figure(figsize=(20,15))
plt.subplot(2, 1, 1)
plt.plot(t_m,left_channel)
plt.title('Muestreo con el doble de frecuencia')
plt.xlabel('Muestras en el tiempo')
plt.ylabel('Amplitud')
Text(0, 0.5, 'Amplitud')
Audio(left_channel, rate=fs1)
fs2=0.5*rate
t_m=np.arange(0,float(len(left_channel))/fs2,1/fs2)
# Graficamos la señal original respecto a la señal con ruido
plt.figure(figsize=(20,15))
plt.subplot(2, 1, 1)
plt.plot(t_m,left_channel)
plt.title('Muestreo con la mitad de frecuencia')
plt.xlabel('Muestras en el tiempo')
plt.ylabel('Amplitud')
Text(0, 0.5, 'Amplitud')
Audio(left_channel, rate=fs2)
import numpy
import numpy as np
import matplotlib.pyplot as plt
tren=np.ones(40)
t=np.arange(0,len(tren),1)
# Se grafica el pulso
plt.figure(figsize=(20,15 ))
plt.subplot(2, 1, 1)
plt.plot(t,tren,'purple')
plt.grid()
plt.xlabel("tiempo (s)")
plt.ylabel("Amplitud")
plt.title("Pulso")
plt.subplot(2, 1, 2)
plt.stem(t,tren,'purple')
plt.grid()
plt.xlabel("tiempo (s)")
plt.ylabel("Amplitud")
plt.title("Pulso")
plt.show()
secuencia_fn=[0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987]
t_secu= np.arange(len(secuencia_fn))
plt.figure(figsize=(15,10 ))
plt.subplot(2, 1, 1)
##plt.plot(t2,right_channel)
plt.stem(t_secu,secuencia_fn)
plt.title('Canal Derecho')
plt.xlabel('Muestras en el tiempo')
plt.ylabel('Amplitud')
plt.grid()
t_c4 = np.linspace(-5, 5, 40) # Vector de tiempo
f_c4 = np.exp(-t**2) # Señal gaussiana
f_shifted = np.roll(f_c4, 2)
plt.plot(t_c4, f_c4, label='Señal original')
plt.plot(t_c4, f_shifted, label='Señal desplazada')
plt.legend()
plt.xlabel('Tiempo')
plt.ylabel('Amplitud')
plt.show()
datos = np.loadtxt('data_precipitacion.txt', delimiter=',')
day= []
year =[]
value=[]
for i in range(len(datos)):
day.append(datos[i][0])
year.append(datos[i][1])
value.append(datos[i][2])#
day=np.array(day)
year=np.array(year)
value=np.array(value)
my_year =value[np.where(year==1997)[0]]
time_year= day[np.where(year==1997)[0]]
#Valores del filtro de media movil
L= [50,180,380,500]
aux=0
plt.figure(figsize=(15,10))
for i in L:
aux+=1
#Coeficientes del filtro de media movil
coefs= np.ones(i)/float(i)
#Función de transferencia
num=np.zeros(i)
num[0]=1.0/i
num[-1]=-1.0/i
den=np.zeros(i)
den[0]=1
den[1]=-1
senal_smooth=np.convolve(my_year,coefs,mode='same')
#Gráfica de las señales obtenidas en el 2.1.6
plt.subplot(2,2,aux)
plt.plot(senal_smooth)
plt.grid()
plt.title(i)
plt.xlabel("Time (day)")
from ztrans import *
L=50
#Coeficientes del filtro de media movil
coefs= np.ones(L)/float(L)
#Función de transferencia
num1=np.zeros(L)
num1[0]=1.0/L
num1[-1]=-1.0/L
den1=np.zeros(L)
den1[0]=1
den1[1]=-1
mfreqz(num1,den1)
plt.show()
C:\Users\gil_b\anaconda3\lib\site-packages\scipy\signal\filter_design.py:475: RuntimeWarning: invalid value encountered in true_divide h = (npp_polyval(zm1, b, tensor=False) /
difcoefs=[1,-1]
senal_diferencia=np.convolve(my_year,difcoefs,mode='same')
plt.plot(senal_diferencia)
plt.xlabel("Time (day)")
plt.ylabel("Value")
plt.title('Graph 1997')
plt.grid()
plt.show()
from utils import delay_noise
signal_noise= delay_noise(tren) # se le agrega el ruido
xcorr=np.correlate(signal_noise,tren) # se utiliza la función correlate para realizar la correlación
plt.figure(figsize=(10,5))
plt.plot(xcorr,label= "Autocorrelacion de pulso")
plt.xlabel('Time', fontsize=18)
plt.ylabel('Amplitude', fontsize= 18)
plt.grid("on")
##para calcular el retraso de la gráfica observamos la siguiente función y lo comparamos con el de la gráfica
retraso=np.argmax(xcorr)
print(retraso)
153
num = [1,15]
den = [1,2,0.3]
zeropoles(num,den) # graficamos los polos y ceros Polos y ceros
fs=5000
w, h = signal.freqz(num, den)
plt.figure()
plt.figure(figsize=(20,15))
plt.plot(w/np.pi*fs/2, 20*np.log10(abs(h)))
plt.title('Muestreo con la mitad de frecuencia')
plt.xlabel('Muestras en el tiempo')
plt.ylabel('Amplitud')
Text(0, 0.5, 'Amplitud')
<Figure size 432x288 with 0 Axes>